package model

import (
	"appengine"
	"appengine/datastore"
	"appengine/memcache"
	"entity"
)

var SiteSetting_CacheName string = "_siteSetting_"
var CurrentTemplate_CacheName string = "_currentTemplate_"

func GetCurrentSetting(c appengine.Context, obj *entity.Setting) error {
	if _, err := memcache.Gob.Get(c, SiteSetting_CacheName, &obj); err == memcache.ErrCacheMiss {
		//one setting per application, id always = 1
		var id string = "1"
		k := datastore.NewKey(c, "Setting", id, 0, nil)
		if err := datastore.Get(c, k, obj); err != nil {
			return err
		}
		itemCache := &memcache.Item{
			Key:    SiteSetting_CacheName,
			Object: obj,
		}
		memcache.Gob.Set(c, itemCache)
	}
	return nil
}

func GetTemplate(c appengine.Context, id string, obj *entity.Template) error {
	if _, err := memcache.Gob.Get(c, CurrentTemplate_CacheName, &obj); err == memcache.ErrCacheMiss {
		k := datastore.NewKey(c, "Template", id, 0, nil)
		if err := datastore.Get(c, k, obj); err != nil {
			return err
		}
		itemCache := &memcache.Item{
			Key:    CurrentTemplate_CacheName,
			Object: obj,
		}
		memcache.Gob.Set(c, itemCache)
	}
	return nil
}
